package com.glory.erp.invoice.order.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import com.glory.erp.invoice.order.bean.Order;
import com.glory.erp.invoice.order.bean.OrderQuery;
import com.glory.erp.invoice.orderdetail.bean.OrderDetail;
import com.glory.erp.auth.base.BaseService;
import com.glory.erp.auth.emp.bean.Emp;

@Transactional
public interface OrderService extends BaseService<Order>{

	/**
	 * @param  
	 * @Description: 保存采购订单
	 * @Title: saveBuyOrder
	 * @Author: 樊双峰
	 * @Param: @param order 订单数据模型 封装了供应商的uuid
	 * @Param: @param goodsUuids 商品uuid数组
	 * @Param: @param nums 数量数组
	 * @Param: @param prices 单价数组
	 * @return: void
	 * @Date: 2018年5月31日 上午12:40:10
	 * @throws   
	 */
	public void saveBuyOrder(Order order, Long[] goodsUuids, Integer[] nums,
			Double[] prices, Emp creater);

	/**
	 * @Description: 获取采购订单数据
	 * @Title: findAllBuy
	 * @Author: 樊双峰
	 * @Param: @param orderQuery
	 * @Param: @param pageNum
	 * @Param: @param pageCount
	 * @Param: @return
	 * @return: List<Order>
	 * @Date: 2018年6月5日 下午10:24:50
	 * @throws   
	 */
	public List<Order> findAllBuy(OrderQuery orderQuery, Integer pageNum,
			Integer pageCount);

	public int getCountBuyCheck(OrderQuery orderQuery);

	public List<Order> findAllBuyCheck(OrderQuery orderQuery, Integer pageNum,
			Integer pageCount);

	/**
	 * @param emp 
	 * @Description: 采购审核通过
	 * @Title: buyCheckPass
	 * @Author: 樊双峰
	 * @Param: @param uuid 被审核的订单uuid
	 * @Param: @param checker 审核人
	 * @return: void
	 * @Date: 2018年6月7日 下午10:45:19
	 * @throws   
	 */
	public void buyCheckPass(Long uuid, Emp checker);

	/**
	 * @Description: 采购审核不通过（驳回）
	 * @Title: buyCheckNoPass
	 * @Author: 樊双峰
	 * @Param: @param uuid
	 * @Param: @param login
	 * @return: void
	 * @Date: 2018年6月7日 下午11:04:40
	 * @throws   
	 */
	public void buyCheckNoPass(Long uuid, Emp checker);

	public Integer getCountTask(OrderQuery orderQuery);

	public List<Order> findAllTask(OrderQuery orderQuery, Integer pageNum,
			Integer pageCount);

	/**
	 * @Description: 指派运输任务
	 * @Title: assignTask
	 * @Author: 樊双峰
	 * @Param: @param uuid 订单uuid
	 * @Param: @param completer 跟单人
	 * @return: void
	 * @Date: 2018年6月8日 下午10:32:38
	 * @throws   
	 */
	public void assignTask(Long uuid, Emp completer);

	public Integer getCountTask(OrderQuery orderQuery, Emp login);

	public List<Order> findAllTask(OrderQuery orderQuery, Integer pageNum,
			Integer pageCount, Emp login);

	/**
	 * @Description: 结单
	 * @Title: endTask
	 * @Author: 樊双峰
	 * @Param: @param uuid
	 * @return: void
	 * @Date: 2018年6月9日 上午12:17:37
	 * @throws   
	 */
	public void endTask(Long uuid);

	public Integer getCountInStore(OrderQuery orderQuery);

	public List<Order> findAllInStore(OrderQuery orderQuery, Integer pageNum,
			Integer pageCount);

	/**
	 * @return 
	 * @Description: 
	 * @Title: inGoods
	 * @Author: 樊双峰
	 * @Param: @param storeUuid
	 * @Param: @param orderDetailUuid
	 * @Param: @param num
	 * @Param: @param login
	 * @return: void
	 * @Date: 2018年6月9日 下午3:29:58
	 * @throws   
	 */
	public OrderDetail inGoods(Long storeUuid, Long orderDetailUuid, Integer num,
			Emp login);
}